
import axios from 'axios';
import qs from 'qs';
import { ElMessage } from 'element-plus';
import Cookies from 'js-cookie';


// 创建一个 axios 实例
const service = axios.create({
    // baseURL: process.env.NODE_ENV == 'development' ? '/api' : '/admin/api', // 所有的请求地址前缀部分
    baseURL: import.meta.env.VITE_REQUEST + '/api',
    timeout: 60000, // 请求超时时间毫秒
})

// 请求拦截器
service.interceptors.request.use(res => {
    // 在请求时添加token,修复登录无法正确给token问题
    res.headers.token = Cookies.get('token');
    // 判断是否为FormData类型 用于文件上传
    let formData = res.data instanceof FormData;
    // 序列化请求参数 
    if (!formData) res.data = qs.stringify(res.data);
    return res;
})

// 响应拦截器
service.interceptors.response.use(res => {
    let data = res.data;
    // 当后台返回0时(代表报错提示,不是程序出错)
    if (!data.state) {
        ElMessage({ type: 'error', message: data.info });
        return Promise.reject(data);  //阻止执行
    } else return res.data;
}, function (e) {
    let r = e.response;
    ElMessage({ type: 'error', message: '' + r.status + ' : ' + r.statusText });
    return Promise.reject(r);
})

let post = service.post, get = service.get;
export { post, get }